﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Practices.ObjectBuilder;
using GC2.Bussines.BMSeguridad;
using GC2.Entities.Seguridad;
using GC2.ExceptionHandler;

public partial class BMSeguridad_AdministracionGrupos : GenericPage
{    
    private ExceptionConstructor exNew = new ExceptionConstructor();

    private Grupos grupoBuscado
    {
        get
        {
            if (ViewState["grupoBuscado"] != null)
            {
                return (Grupos)ViewState["grupoBuscado"];
            }
            else
            {
                return new Grupos();
            }
        }
        set
        {
            ViewState["grupoBuscado"] = value;
        }
    }

    private List<Grupos> gruposSource
    {
        get
        {
            if (ViewState["gruposSource"] != null)
            {
                return (List<Grupos>)ViewState["gruposSource"];
            }
            else 
            {
                return new List<Grupos>();
            }
        }
        set
        {
            ViewState["gruposSource"] = value;
        }
    }

    #region Controles

    /// <Summary>
    /// Se llama cada vez que se carga la página
    /// 
    /// Moficado por: MDT  Fecha: 12/07/2007
    /// Motivo del Cambio:
    /// 
    /// </Summary>
    /// <returns></returns>
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SetearCultura();
            SetearConexion();
            if (!this.IsPostBack)
            {
                //AutenticacionUsuario();
                //int iId_Usuario = System.Convert.ToInt32(Session["Id_Usuario"]);
                //string srtPermiso = ControlPermisos((int)UI_Permissions.frmGrupos, iId_Usuario);
                //if (srtPermiso != "S")
                //{
                //    Response.Redirect("~/Error.aspx", false);
                //}
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    /// <Summary>
    /// Se llama cada vez que se aprieta el botón Buscar. Llena una grilla con los registros 
    /// que cumplen las condiciones de filtrado.
    /// 
    /// Moficado por: MDT  Fecha: 25/06/2007
    /// Motivo del Cambio:
    /// 
    /// </Summary>
    /// <returns></returns>
    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        try
        {
            BMGrupos bmGrupos = new BMGrupos(Connection);
            Grupos grupo = new Grupos();
            grupo.Nombre_Grupo = txtNombreGrupo.Text.Trim();
            grupo.Descripcion_Grupo = txtDescripcionGrupo.Text.Trim();

            // Guarda las características de la búsqueda
            grupoBuscado = grupo;

            gruposSource = bmGrupos.BMGruposSearch(grupo);

            GridDataBound();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    /// <Summary>
    /// Se llama cada vez que se aprieta el botón Nuevo. Redirecciona a ls
    /// página de tabs para crear un nuevo grupo.
    /// 
    /// Moficado por: MDT  Fecha: 12/07/2007
    /// Motivo del Cambio:
    /// 
    /// </Summary>
    /// <returns></returns>
    protected void btnNuevo_Click(object sender, EventArgs e)
    {
        try
        {
            Grupos grupo = null;
            Session["Grupo"] = grupo;
            Response.Redirect("AdministracionGruposTab.aspx", false);
        }
        catch (Exception ex)
        {
            ErrorUI(ex);
        }
    }

    /// <Summary>
    /// Se llama cada vez que se aprieta el botón Cancelar. Redirecciona a ls
    /// página por defecto del módulo de seguridad.
    /// 
    /// Moficado por: MDT  Fecha: 12/07/2007
    /// Motivo del Cambio:
    /// 
    /// </Summary>
    /// <returns></returns>
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        try
        {
            Response.Redirect("../Default.aspx", false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    /// <Summary>
    /// Se llama cada vez que se selecciona una fila de la grilla. Redirecciona a ls
    /// página de tabs para modificar un grupo.
    /// 
    /// Moficado por: MDT  Fecha: 12/07/2007
    /// Motivo del Cambio:
    /// 
    /// </Summary>
    /// <returns></returns>
    protected void dgGrupos_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            BMGrupos bmGrupos = new BMGrupos(Connection);

            Label label = new Label();
            Grupos grupo = new Grupos();

            label = (Label)dgGrupos.Rows[dgGrupos.SelectedIndex].Cells[0].FindControl("Id_Grupo");
            grupo.Id_Grupo = int.Parse(label.Text.Trim());
            grupo = bmGrupos.BMGruposGetOne(grupo);

            Session["Grupo"] = grupo;
            Response.Redirect("AdministracionGruposTab.aspx", false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    /// <Summary>
    /// Se llama cada vez que se presiona sobre un link "eliminar" de la grilla.
    /// 
    /// Moficado por: MDT  Fecha: 12/07/2007
    /// Motivo del Cambio:
    /// 
    /// </Summary>
    /// <returns></returns>
    protected void dgGrupos_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        try
        {
            BMGrupos bmGrupos = new BMGrupos(Connection);

            Label label = new Label();
            Grupos grupo = new Grupos();
            label = (Label)dgGrupos.Rows[e.RowIndex].Cells[0].FindControl("Id_Grupo");
            grupo.Id_Grupo = System.Convert.ToInt32(label.Text);

            // Borra el grupo seleccionado
            grupo = bmGrupos.BMGruposGetOne(grupo);
            grupo.Fecha_Hasta = DateTime.Parse(DateTime.Now.ToString("dd/MM/yyyy"));
            bmGrupos.BMGruposDelete(grupo);

            // Actualiza la grilla
            gruposSource = bmGrupos.BMGruposSearch(grupoBuscado);
            GridDataBound();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    /// <Summary>
    /// Se llama cada vez que se presiona sobre un número de página de la grilla.
    /// 
    /// Moficado por: MDT  Fecha: 17/07/2007
    /// Motivo del Cambio:
    /// 
    /// </Summary>
    /// <returns></returns>
    protected void dgGrupos_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        dgGrupos.PageIndex = e.NewPageIndex;
        GridDataBound();
    }
    #endregion

    #region Métodos

    /// <Summary>
    /// Variable auxiliar global
    /// 
    /// Moficado por: MDT  Fecha: 12/07/2007
    /// Motivo del Cambio:
    /// 
    /// </Summary>
    /// <returns int></returns int>
    private Grupos grupoActual
    {
        get
        {
            if (ViewState["grupoActual"] != null)
                return (Grupos)ViewState["grupoActual"];
            else
                return new Grupos();
        }
        set
        {
            this.ViewState["grupoActual"] = value;
        }
    }

    /// <Summary>
    /// Llena la grilla con los datos encontrados en la tabla Seguridad.Grupos
    /// según los criterios de filtrado
    /// 
    /// Moficado por: MDT  Fecha: 25/06/2007
    /// Motivo del Cambio:
    /// 
    /// </Summary>
    /// <returns></returns>
    private void GridDataBound()
    {
        dgGrupos.DataSource = gruposSource;
        dgGrupos.DataBind();
    }

    #endregion
}


